package sortByCategory.DivideAndConquer;

import java.util.ArrayList;
import java.util.List;

/**
 * @author haiboWu
 * @create 2020-03-10 13:56
 */
public class No_241_DiffWaysToCompute {
    public List<Integer> diffWaysToCompute(String input){
        List<Integer>list=new ArrayList<>();

        for (int i = 0; i < input.length(); i++) {
            char c=input.charAt(i);
            if(c=='+'||c=='-'||c=='*'){
                List<Integer>left=diffWaysToCompute(input.substring(0,i));
                List<Integer>right=diffWaysToCompute(input.substring(i+1));
                for(Integer l:left){
                    for(Integer r:right){
                        switch (c){
                            case '+':
                                list.add(l+r);
                                break;
                            case '-':
                                list.add(l-r);
                                break;
                            case '*':
                                list.add(l*r);
                                break;
                        }
                    }
                }
            }
        }
        if(list.size()==0){
            list.add(Integer.valueOf(input));
        }
        return list;

    }
}
